﻿using NicoView.Model.Service;
using NicoView.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;

namespace NicoView.View.CommentScroll
{
    public abstract class CommentScrollContext
    {
        public CommentScrollContext(NicoViewCommentListViewModelBase viewModel, ScrollViewer viewer)
        {
            ViewModel = viewModel;
            ScrollViewer = viewer;
            ScrollFlag = false;
        }

        protected bool ScrollFlag { get; set; }

        protected NicoViewCommentListViewModelBase ViewModel { get; private set; }

        protected ScrollViewer ScrollViewer { get; private set; }

        public abstract void OnScrollChanged(ScrollChangedEventArgs e, int commentCount);


        internal abstract void OnLayoutUpdated(EventArgs e,int commentCount);

        internal abstract void OnScroll(System.Windows.Controls.Primitives.ScrollEventArgs e, int count);

        internal abstract void OnMouseWheel(System.Windows.Input.MouseWheelEventArgs e, int count);

        internal abstract void OnLineUpClick(System.Windows.RoutedEventArgs e, int p);

        internal abstract void OnKeyDown(KeyEventArgs e, int p);



        internal abstract void OnSelectionChange(SelectionChangedEventArgs e, ItemCollection itemCollection, int count);

        internal abstract void OnRichTextMouseDown(MouseButtonEventArgs e, ItemCollection itemCollection, int count);
    }
}
